package top.ytazwc.improve.service.impl;

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import top.ytazwc.improve.service.ICommodity;
import top.ytazwc.store.goods.DeliverReq;
import top.ytazwc.store.goods.GoodsService;

import java.util.Map;

/**
 * @author 花木凋零成兰
 * @title GoodsCommodityService
 * @date 2024/4/28 11:14
 * @package top.ytazwc.improve.service.impl
 * @description 发方实物商品接口
 */
@Slf4j
public class GoodsCommodityService implements ICommodity {
    // 模拟依赖注入
    private GoodsService goodsService = new GoodsService();
    @Override
    public void sendCommodity(String userId, String commodityId, String bizId, Map<String, String> extMap) throws Exception {
        // 填写收货用户信息
        DeliverReq deliverReq = DeliverReq.builder()
                // 获取 根据用户id 用户姓名
                .userName(queryUserName(userId))
                // 根据用户id 获取用户电话号码
                .userPhone(queryUserPhoneNumber(userId))
                // 商品的 sku
                .sku(commodityId)
                // 订单Id 即业务Id 防止重复
                .orderId(bizId)
                // 获取收货人姓名
                .consigneeUserName(extMap.get("consigneeUserName"))
                // 获取收货人手机
                .consigneeUserPhone(extMap.get("consigneeUserPhone"))
                // 获取收货人地址
                .consigneeUserAddress(extMap.get("consigneeUserAddress"))
                .build();
        // 发放实体商品
        Boolean isSuccess = goodsService.deliverGoods(deliverReq);
        log.info("请求参数[实物商品] => uId：{} commodityId：{} bizId：{} extMap：{}", userId, commodityId, bizId, JSON.toJSON(extMap));
        log.info("测试结果[实物商品]：{}", isSuccess);

        if (!isSuccess) {
            throw new RuntimeException("实物商品发放失败");
        }
    }
    private String queryUserName(String uId) {
        return "花花";
    }
    private String queryUserPhoneNumber(String uId) {
        return "15200101232";
    }
}
